a11y: Re-implement gtk_tree_view_accessible_get_n_rows()
authorBenjamin Otte <otte@redhat.com>
Thu, 7 Jul 2011 07:54:04 +0000 (09:54 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 16 Nov 2011 03:31:06 +0000 (04:31 +0100)
... using the new _gtk_rbtree_find_index().

gtk/a11y/gtktreeviewaccessible.c

index 70417890cf23816d9223cbdb20493c9e12babe80..d7f4b8909e1dba576626db2ed2546a400085bb25 100644 (file)
@@ -23,6 +23,9 @@
 #ifdef GDK_WINDOWING_X11
 #include <gdk/x11/gdkx.h>
 #endif
+
+#include "gtktreeprivate.h"
+
 #include "gtktreeviewaccessible.h"
 #include "gtkrenderercellaccessible.h"
 #include "gtkbooleancellaccessible.h"
@@ -947,33 +950,19 @@ gtk_tree_view_accessible_get_n_rows (AtkTable *table)
 {
   GtkWidget *widget;
   GtkTreeView *tree_view;
-  GtkTreeModel *tree_model;
-  gint n_rows;
+  GtkRBTree *tree;
 
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     return 0;
 
   tree_view = GTK_TREE_VIEW (widget);
-  tree_model = gtk_tree_view_get_model (tree_view);
+  tree = _gtk_tree_view_get_rbtree (tree_view);
 
-  if (!tree_model)
-    n_rows = 0;
-  else if (gtk_tree_model_get_flags (tree_model) & GTK_TREE_MODEL_LIST_ONLY)
-    /* No collapsed rows in a list store */
-    n_rows = GTK_TREE_VIEW_ACCESSIBLE (table)->n_rows;
-  else
-    {
-      GtkTreePath *root_tree;
-
-      n_rows = 0;
-      root_tree = gtk_tree_path_new_first ();
-      iterate_thru_children (tree_view, tree_model,
-                             root_tree, NULL, &n_rows, 0);
-      gtk_tree_path_free (root_tree);
-    }
+  if (tree == NULL)
+    return 0;
 
-  return n_rows;
+  return tree->root->parity;
 }
 
 static gint